<html>
    <head>
        <title>示例</title>
    </head>
    <body>
        <script>
            /*
                        一、示例： 添加通知图标

                                在此示例中，我们将在语言切换项的左侧添加一个通知（铃声）图标。

                                工具栏中的一个项目应该是视图组件。

                                所以，首先，在你的项目中创建一个新的视图组件：

                                     1、NotificationViewComponent.cs

                                                public class NotificationViewComponent : AbpViewComponent
                                                {
                                                    public async Task<IViewComponentResult> InvokeAsync()
                                                    {
                                                        return View("/Pages/Shared/Components/Notification/Default.cshtml");
                                                    }
                                                }


                                    2、Default.cshtml

                                               <div id="MainNotificationIcon" style="color: white; margin: 8px;">
                                                    <i class="far fa-bell"></i>
                                               </div>



                                    3、工具栏贡献程序类 IToolbarContributor

                                            现在，我们可以创建一个实现IToolbarContributor接口的类：

                                                public class MyToolbarContributor : IToolbarContributor  // 工具栏贡献者程序
                                                {
                                                    // 配置工具栏
                                                    public Task ConfigureToolbarAsync(IToolbarConfigurationContext context)
                                                    {
                                                        if (context.Toolbar.Name == StandardToolbars.Main)  // 配置主工具栏
                                                        {
                                                            context.Toolbar.Items  
                                                                .Insert(0, new ToolbarItem(typeof(NotificationViewComponent)));  // 添加工具栏项目
                                                        }

                                                        return Task.CompletedTask;
                                                    }
                                                }


                                            您可以使用授权来决定是否添加ToolbarItem：

                                                if (await context.IsGrantedAsync("MyPermissionName"))
                                                {
                                                    //...add Toolbar items
                                                }


                                            您可以使用RequirePermissions扩展方法作为快捷方式。它也更高性能，ABP优化了所有项目的权限检查：

                                               context.Toolbar.Items.Insert(0, new ToolbarItem(typeof(NotificationViewComponent)).RequirePermissions("MyPermissionName"));

                                            此类添加NotificationViewComponent作为Main工具栏中的第一项。

                                            最后，您需要将此贡献者添加到AbpToolbarOptions，在模块的ConfigureServices中：

                                                Configure<AbpToolbarOptions>(options =>
                                                {
                                                    options.Contributors.Add(new MyToolbarContributor());
                                                });

                                            就是这么简单，当您运行应用程序时，您将在工具栏上看到通知图标：

                                            NotificationViewComponent只是返回一个没有任何数据的视图。

                                            在现实生活中，您可能希望查询数据库（或调用HTTP API）以获取通知并传递给视图。

                                            如果需要，您可以将JavaScript或CSS文件添加到工具栏项的全局bundle。
                    */

        </script>
    </body>
</html>